
public class bCard {

	public static void nazwaKarty(int karta){
		
		int wartosc = karta%13;
		switch(wartosc){
		
			case 0: System.out.print("DWOJKA "); break;
			case 1: System.out.print("TROJKA "); break;
			case 2: System.out.print("CZWORKA "); break;
			case 3: System.out.print("PIATKA "); break;
			case 4: System.out.print("SZOSTKA "); break;
			case 5: System.out.print("SIODEMKA "); break;
			case 6: System.out.print("OSEMKA "); break;
			case 7: System.out.print("DZIEWIATKA "); break;
			case 8: System.out.print("DZIESIATKA "); break;
			case 9: System.out.print("JOPEK "); break;
			case 10: System.out.print("DAMA "); break;
			case 11: System.out.print("KRÓL "); break;
			case 12: System.out.print("AS "); break;
		}
		
		wartosc = karta / 13;
		
		switch(wartosc){
			case 0: System.out.print("TREFL"); break;
			case 1: System.out.print("KIER"); break;
			case 2: System.out.print("KARO"); break;
			case 3: System.out.print("SERCE"); break;
		}
	}
	
	public int[] uklady(int[] reka){
		
		int tab[] = sortuj(reka);
		
		if(reka.length == 5){
			int k0 = tab[0] % 13;
			int k1 = tab[1] % 13;
			int k2 = tab[2] % 13;
			int k3 = tab[3] % 13;
			int k4 = tab[4] % 13;
			
			// czy poker || strit?
			if(tenSamKolor(reka) == 1){
				if(k0+1 == k1 && k1+1 == k2 && k2+1 == k3 && k3+1 == k4){
					int[] wynik = {9, tab[0], tab[1], tab[2], tab[3], tab[4]};
					return wynik;
				}
				else{
					int[] wynik = {8, tab[0], tab[1], tab[2], tab[3], tab[4]};
					return wynik;
				}
			}
			else if(k0+1 == k1 && k1+1 == k2 && k2+1 == k3 && k3+1 == k4){
				int[] wynik = {7, tab[0], tab[1], tab[2], tab[3], tab[4]};
				return wynik;
			}
				
			
			if(k0 == k1){
				if(k1 == k2){
					if(k2 == k3){
						int[] wynik = {6, tab[0], tab[1], tab[2], tab[3]};
						return wynik;
					}
					else if(k3 == k4){
						int[] wynik = {5, tab[0], tab[1], tab[2], tab[3], tab[4]};
						return wynik;
					}
					else{
						int[] wynik = {3, tab[0], tab[1], tab[2]};
						return wynik;
					}
				}
				else if(k2 == k3){
					if(k3 == k4){
						int[] wynik = {5, tab[0], tab[1], tab[2], tab[3], tab[4]};
						return wynik;
					}
					else{
						int[] wynik = {4, tab[0], tab[1], tab[2], tab[3]};
						return wynik;
					}
				}
				else if(k3 != k4){
					int[] wynik = {2, tab[0], tab[1]};
					return wynik;
				}
			}
			else if(k4 == k3){
				if(k3 == k2){
					int[] wynik = {3, tab[2], tab[3], tab[4]};
					return wynik;
				}
				else if(k1 == k2){
					int[] wynik = {4, tab[1], tab[2], tab[3], tab[4]};
					return wynik;
				}
				else{
					int[] wynik = {2, tab[3], tab[4]};
					return wynik;
				}
			}
			else if(k1 == k2){
				if(k2 != k3){
					int[] wynik = {2, tab[1], tab[2]};
					return wynik;
				}			
			}
			else if(k2 == k3){
				int[] wynik = {2, tab[2], tab[3]};
				return wynik;
			}
		
		} // czy w reka jest 5 kart (tak)
		
		int[] wynik = {-1};
		return wynik;
	}
	
	public int najwyzsza(int[] karty){
		
		int tab[] = sortuj(karty);
		
		return tab[4];
	}
	
	public int para(int[] karty){
		
		int buff;
		int licznik1 = 0, licznik2 = 0;
		for(int i=0; i<karty.length; i++){
			
			buff=karty[i];
			
			for(int j=i+1; j<karty.length; j++){
				if(buff % 13 == karty[j] % 13)
					licznik1++;
			}
			
			if(licznik1 == 2)
				licznik2++;
			else
				return -1;
		}
		
		if(licznik2 == 1)
			return 1;
		
		return -1;
	}
	
	public int dwiePary(int[] karty){
		
		int buff;
		int licznik1 = 0, licznik2 = 0;
		for(int i=0; i<karty.length; i++){
			
			buff=karty[i];
			
			for(int j=i+1; j<karty.length; j++){
				if(buff % 13 == karty[j] % 13)
					licznik1++;
			}
			
			if(licznik1 == 2)
				licznik2++;
			else
				return -1;
		}
		
		if(licznik2 == 2)
			return 1;
		
		return -1;
	}
	
	public int trojka(int[] karty){
		
		int tab[] = sortuj(karty);
		
		if( tab[0] % 13 == tab[1] % 13 && tab[1] % 13 == tab[2] % 13){
			if( tab[3] % 13 != tab[4] % 13){
				return 1;
			}
		}
		else if( tab[1] % 13 == tab[2] % 13 && tab[2] % 13 == tab[3] % 13){
			if( tab[0] % 13 != tab[4] % 13){
				return 1;
			}
		}
		else if( tab[2] % 13 == tab[3] % 13 && tab[3] % 13 == tab[4] % 13){
			if( tab[0] % 13 != tab[1] % 13){
				return 1;
			}
		}
		
		return -1;		
	}
	
	public int strit(int[] karty){
		
		int tab[] = sortuj(karty);

		for(int i=0; i<karty.length-1; i++){
				if( (tab[i] % 13)+1 != tab[i+1] % 13 )
					return -1;	
		}

		return 1;
	}
	
	public int tenSamKolor(int[] karty){
		
		int i, kolor;
		int buff = karty[0] / 13;
		
		for(i=1; i<karty.length; i++){
			kolor = karty[i] / 13;
			if(buff != kolor)
				return -1;
		}
		
		return 1;		
	}
	
	public int full(int[] karty){
		
		int tab[] = sortuj(karty);
		int pierwsza = tab[0] % 13;
		int ostatnia = tab[4] % 13;
		
		if( tab[1] % 13 == pierwsza && tab[2] % 13 == pierwsza){
			if( tab[3] % 13 == ostatnia){
				return 1;
			}
		}
		else if( tab[1] % 13 == pierwsza){
			if( tab[2] % 13 == ostatnia && tab[3] % 13 == ostatnia){
				return 1;
			}
		}
		
		return -1;
	}
	
	public int kareta(int[] karty){
		
		int pierwsza, ostatnia;
		
		int tab[] = sortuj(karty);
		pierwsza = tab[0] % 13;
		ostatnia = tab[4] % 13;
		
		if( tab[1] % 13 == pierwsza && tab[2] % 13 == pierwsza && tab[3] % 13 == pierwsza)
			return 1;
		else if( tab[1] % 13 == ostatnia && tab[2] % 13 == ostatnia && tab[3] % 13 == ostatnia)
			return 1;
		
		return -1;
	}
	
	public int poker(int[] karty){
		
		int tab[] = sortuj(karty);

		for(int i=0; i<karty.length-1; i++){
				if( tab[i]+1 != tab[i+1] )
					return -1;	
		}

		if( tenSamKolor(karty) != 1)
			return -1;

		return 1;
	}
	
	public int[] sortuj(int[] karty){
		
		int[] tab1 = new int[ karty.length ];
		int i;
		for(i=0; i<karty.length; i++)
			tab1[i]=-1;
		
		int buff,buff2;
		
		for(i=0; i<karty.length; i++){
			
			buff = karty[i] % 13;
			buff2 = 0;
			
			for(int j=0; j<karty.length; j++){
				if( buff > (karty[j] % 13) )
					buff2++;				
			}
			
			tab1[ buff2 ] = buff;
		}
		
		return tab1;
	}
	
}
